/*
 *                          许可协议    
 *    
 *  COPYRIGHT ©2008 The Siox software project Lab.
 * 
 * 版权声明:                               
 *  1.任何"派生软件"都必须包含此许可协议,"派生软件的开发者"必   
 *  须完全保留被继承"软件"的许可协议和"版权信息".          
 *  2."派生软件开发者"在别人使用他所"派生"的"软件"时,自动成为"开
 *  发者".                               
 *  3."使用者"所生成的二进制代码文件须包含"原始开发者"的版权信息. 
 *  4.如该软件并未得到"开发者"的开源，那么"使用者"对本程序仅有使  
 *  用权，并不得进行反向工程.                      
 *  5.本协议保留"原始开发者"的版权信息在许可协议文本之内.
 *  6.本文档作为源代码/程序的基本协议,如有变化作为本协议扩充 
 *                                     
 * 免责声明:                               
 *  1.使用本"软件"都意味"使用者"是自愿使用本"软件",接受此许可协 
 *  议的所有条款.如果"使用者"不同意此许可协议就不能使用本"软件".  
 *  2.本"软件"虽然在开发者的开发环境下经过严格测试,但不能排除    
 *  "软件"中仍然存在错误.由于使用本"软件"所造成的任何损失,"开发  
 *  者"不负任何责任!                          
 *  3.本"软件"在被"使用"过程中,由"使用者"发现的任何错误必须再反 
 *  馈给"开发者"并经过"开发者"同意后,才可对其他人公开.任何未经过  
 *  "开发者"同意而被使用者擅自公开的本"软件"的错误,"开发者"有权  
 *  要求其对"开发者"名誉损失负法律责任. 
 * 
 *  个人主页:http://hi.baidu.com/lindily
 *  电子信箱:lindily@126.com               
 */

package cn.siox.util.UI;

/**
 * @类名 StandardFileFilter
 * @作者 Lindily
 * @日期 2008-11-15 0:17:27
 */
 import java.io.File;

 import javax.swing.filechooser.FileFilter;

 public class StandardFileFilter extends FileFilter {

     String[] extensions;

     String description;

     public StandardFileFilter(String ext) {
         this(new String[] { ext }, null);
     }

     public StandardFileFilter(String[] exts, String descr) {
         // Clone and lowercase the extensions
         extensions = new String[exts.length];
         for (int i = exts.length - 1; i >= 0; i--) {
             extensions[i] = exts[i].toLowerCase();
         }
         // Make sure we have a valid (if simplistic) description.
         description = (descr == null ? exts[0] + " files" : descr);
     }

     public boolean accept(File f) {
         // We always allow directories, regardless of their extensions.
         if (f.isDirectory()) {
             return true;
         }

         // It's a regular file, so check the extension.
         String name = f.getName().toLowerCase();
         for (int i = extensions.length - 1; i >= 0; i--) {
             if (name.endsWith(extensions[i])) {
                 return true;
             }
         }
         return false;
     }

     public String getDescription() {
         return description;
     }

 }